package com.co.notaweb.entities;

import java.util.List;

import javax.persistence.DiscriminatorValue;
import javax.persistence.Entity;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;

/**
 * @author PC
 * @version 1.0
 * @created 13-nov-2011 12:14:25
 */
@Entity
@DiscriminatorValue("ESTUDIANTE")
@NamedQueries({
		@NamedQuery(name = "Estudiante.allEstudiantesByCursoMateria", query = "SELECT e FROM Estudiante e INNER JOIN e.curso c INNER JOIN c.asignaciones a WHERE a.curso.id = :idCurso AND a.docente.id = :idDocente AND a.materia.id = :idMateria"),
		@NamedQuery(name = "Estudiante.allEstudiantes", query = "SELECT e FROM Estudiante e"),
		@NamedQuery(name = "Estudiante.consultarEstudiantesPorCurso", query = "SELECT e FROM Estudiante e WHERE e.curso.id = :idCurso"),
		@NamedQuery(name = "Estudiante.consultarEstudiantesPorIds", query = "SELECT e FROM Estudiante e WHERE e.id IN (:idsCurso)"),
		@NamedQuery(name = "Estudiante.consultarEstudiantesPorNotIds", query = "SELECT e FROM Estudiante e WHERE e.id NOT IN (:idsCurso)")
		})
public class Estudiante extends Persona {

	@OneToMany(mappedBy = "estudiante")
	private List<Calificacion> calificaciones;
	@ManyToOne
	private Curso curso;
	@OneToMany(mappedBy = "estudiante")
	private List<LogroEvaluado> logrosEvaluados;

	public Estudiante() {

	}

	public List<Calificacion> getCalificaciones() {
		return calificaciones;
	}

	public void setCalificaciones(List<Calificacion> calificaciones) {
		this.calificaciones = calificaciones;
	}

	public Curso getCurso() {
		return curso;
	}

	public void setCurso(Curso curso) {
		this.curso = curso;
	}

	public List<LogroEvaluado> getLogrosEvaluados() {
		return logrosEvaluados;
	}

	public void setLogrosEvaluados(List<LogroEvaluado> logrosEvaluados) {
		this.logrosEvaluados = logrosEvaluados;
	}

}